package com.streamAPI;

import java.util.List;

/**
 * Stream流的特性
 *    流是lazy的,不用就不会被调用
 *    三大部分:
 *      数据流
 *      N个中间操作
 *      终止操作
 */
public class StreamAPIDemo01 {
    public static void main(String[] args) {
        //挑出以下集合中最大的偶数
        List<Integer> list = List.of(1, 2, 3, -2, 5, 6, 7, 8, 9);

        //for循环: 挨个遍历,找到偶数,定义一个临时变量接收这个偶数,下次遍历到的偶数和这个临时变量进行对比,如果大于,将临时变量替换为这个偶数,如果小于,继续遍历
        int max = 0;
        for (Integer integer : list) {
            if (integer % 2 == 0){
                if (integer > max){
                    max = integer;
                }
            }else {
                continue;
            }
        }
        System.out.println("最大的偶数为: " + max);


        //使用StreamAPI
        //第一步: 将数据封装为流
        //第二步: 定义流式操作
        //第三步  获取最终结果
        list.stream()   //定义流
                .filter(ele -> {
                    System.out.println("正在过滤" + ele);
                    return ele % 2 == 0;
                })   //intermediate  operation  中间操作    //对数据进行过滤,如果返回true,结果就是我们想要的
                    .max(Integer::compareTo)
                        .ifPresent(ele -> System.out.println(ele));  //terminal operation 终止操作

    }
}
